"# -- coding: utf-8 --"
#1.使用reduce去除lst里的数字———》 12349
from functools import reduce
lst = ['a','1','bb','234','','9']
def F(lst):
    def f(x,y):
        return x * 10 ** len(str(y)) + y
    def get_int():
        return map(int,filter(lambda x:str(x).isdigit() and str(x).strip(),lst))
    return reduce(f,get_int())
print(F(lst))

#2.正数在前负数在后，正数从小到大，负数从大到小
list1=[7, -8, 5, 4, 0, -2, -5]
print(sorted(list1,key=lambda x:(x<0,abs(x))))

#3.排序规则：小写-大写-基数-偶数
#原理：先比较元组的第一个值，FALSE
s ='asdf234GDSdsf23'
#小写为FALSE，大写为FALSE，基数为为FALSE，

def format(s):
    for i in s:
        if i.isdigit():
            if int(i) % 2:
                return True,False,i
            else:
                return True,True,i
        else:
            if i.islower():
                return False,False,i
            else:
                return False,True,i
print(''.join(sorted(s,key=format)))